To locate material in these Release Notes, select one of the general categories under Contents, or choose Find from the Edit menu of the browser.
Welcome to the Microsoft® Windows® Platform SDK for Pocket PC. A lot of work continues to go into making the Windows Platform SDK a great tool for your Windows CE development. For more information on Windows CE development see this Microsoft Web site. While visiting the Web site, subscribe to Windows CE Wire. Windows CE Wire is a mailing list that keeps you up to date with the latest news related to Windows CE, the Microsoft operating system platform built for portable computing, multimedia, and embedded solutions. You can register for Windows CE Wire, the biweekly newsletter of developments, announcements, tips, tricks, and techniques for Windows CE at: http://www.microsoft.com/windowsce/community/newsbyemail.asp .
Please continue using the Windows CE Platform SDK, and providing us with your valuable feedback.
Thank you,
The Windows CE Platform SDK Team
To run this SDK, you should have one of the following systems installed on your desktop computer:
Emulation on Windows 98 is not supported.
Among the new features for the Pocket PC SDK are a moveable emulation window, improved Host Serial Port support, improved ITL communications handshaking, Ethernet support for connection to Microsoft® ActiveSync™ 3.1, and a Startup Wizard.
The Pocket PC SDK is designed to provide tools for building applications for Pocket PC devices. This release includes emulation support for the Pocket PC.
The Pocket PC SDK does not include the cross-compilers needed for developing binaries that run on Pocket PC devices. These compilers are included in Microsoft® eMbedded Visual C++ 3.0 or Microsoft® eMbedded Visual Basic 3.0, or in a C/C++ development environment that supports Windows CE.
The Windows CE Platform SDK allows you to uninstall the SDK. However, because the kit is delivered in updates, the uninstall will remove all the components present. Any removed component can be added by reinstalling it.
If the Pocket PC SDK is installed on a machine with no installation of Microsoft® eMbedded Visual Tools 3.0, you may experience a setup error regarding the registration of the CEMGRUI.dll. You may safely ignore this error and successfully complete the SDK setup. Follow the SDK setup with an installation of eMbedded Visual Tools 3.0.
However, the Help content for the Pocket PC SDK will not appear correctly unless it is installed after all other tools and SDKs.
Install Microsoft® eMbedded Visual C++ 3.0, another C/C++ compiler, or Microsoft® eMbedded Visual Basic 3.0.
Install the Pocket PC SDK
Install Microsoft® ActiveSync™ 3.1.
To ensure proper functionality of emulation you need to run Windows NT 4.0 with Service Pack 5 or Windows 2000. Emulation on Windows 95/98 is not supported.
Install Microsoft® eMbedded Visual C++ 3.0, another C/C++ compiler, or Microsoft® eMbedded Visual Basic 3.0.
These installation instructions create an environment in which Pocket PC samples can be built using NMAKE from the command line for eMbedded Visual C++ 3.0. Projects are automatically built and run to emulation in eMbedded Visual Basic 3.0 using the run command.
To ensure proper functionality of emulation you need to run Windows NT 4.0 with Service Pack 5 or Windows 2000. Emulation on Windows 95/98 is not supported.
When installing the Pocket PC SDK, make sure to select ActiveX components for eVB in the Custom Installation dialog box. Pocket PC projects do not show up on a device if the Pocket PC SDK had been installed without ActiveX components. The ActiveX component selection in the Custom Installation dialog is checked by default.
The “Powered by Microsoft Windows CE” Logo program was developed to help users identify hardware and software products that are compatible with the Windows CE operating system. Users can be assured that the products bearing this logo will use the technologies integrated into this operating system. Participants in the logo program share the benefits of Microsoft’s investment in these trademarks.
To find out more about the logo program for the Pocket PC visit http://www.microsoft.com/windowsce/products/support/logo.asp .
Two new wizards in the eMbedded Visual C++ 3.0 IDE enable you to create both Win32 and MFC (.exe) applications tailored specifically for the Pocket PC.
To build within eMbedded Visual C++ 3.0
Note You can add a new supported configuration for the current platform to your project by choosing Configuration from the Build menu and adding a new platform.
The Program arguments in the Debug tab do not change when you set the WCE configuration.
The libraries do not change when you change the WCE configuration between the Pocket PC and H/PC.
WM_HIBER.exe is a tool included in the emulation object store for each platform. WM_HIBER allows the user to send WM_HIBERNATE messages to all applications or only chosen applications. The user can launch it from the Run dialog, by double-clicking its icon in Windows Explorer, or by calling CreateProcess. Windows CE applications may respond to this message, which the system may send in low memory conditions. But in emulation, low memory conditions aren't encountered, and Windows NT does not send this message. WM_HIBER.exe allows you to see how your application behaves when it is sent a WM_HIBERNATE message.
Running WM_HIBER.exe places an icon in the Taskbar Tray. Double-clicking this icon brings up a dialog that allows the user to enter the window to which the WM_HIBERNATE message should be sent. Alternatively, the user can select to broadcast the message to all applications.
REGSVRCE.exe allows COM server DLLs to be registered. REGSVRCE has the following command line options:
REGSVRCE [/u] [/s] DLLName
WM_HIBER.exe is located in the object store. REGSVRCE.exe can be found in the <target install>\WCE300\MS Pocket PC\target\<cpu> directory.
The documentation included with the Windows CE Platform SDK is updated for Windows CE version 3.0. The documentation will continue to be updated until the final product ships.
The following Today Screen API messages from TodayCmn.h are not listed in the Pocket PC API Reference.
Instead, these messages are described in the Help topic Customizing Today Items.
The COOKIE structure is not needed on the device or when using the InkEng.dll on the desktop. The RichInk.DLL on the desktop actually requires a slightly different COOKIE structure be used:
#ifdef RTF_FILTER
typedef struct tagCOOKIE
{
IStream *pstm;
BOOL bFirstCallback;
PWD_PASSWORDDATA *ppwdPWData;
BOOL bLoss;
} COOKIE, * PCOOKIE;
#else
typedef struct tagCOOKIE {
HANDLE hFile;
LPBYTE pbStart;
LPBYTE pbCur;
LONG bCount;
DWORD dwError;
DWORD *opaqueStructure; // Used by InkWriter to send data to itself
} COOKIE, * PCOOKIE;
#endif
Use the InkEng.DLL so that you won't need to pass a pointer to any specific structure. InkEng.DLL is installed with ActiveSync 3.1--when Note Sync is activated--in the \Program Files\Common Files\Microsoft Shared\Notesync Forms. Normally when passing a cookie, it can be any 32 bit address or number.
There are known problems in the following areas:
A notification set to go off on Pocket PC emulation and ARM processors will occur late or not at all if the DST check box is not checked in the Date/Time applet.
The CoFreeUnusedLibraries function requires a timeout--default of 10 minutes--to expire before the DLL component will be unloaded. This breaks Transcriber since it needs to unload its IM in order to complete a reinstall.
If you are uninstalling the Microsoft® Windows® Platform SDK for Pocket PC and one or more custom SDKs exported by the Microsoft® Windows® Platform Builder 3.0, it is strongly recommended that you uninstall the Pocket PC SDK last. Uninstalling the Pocket PC SDK will cause device connectivity problems for any exported SDKs that remain on the machine. However, a reinstallation, or a new installation of your exported SDK will correct this problem.
Please note that following a cancelled uninstallation of the Microsoft® Windows® Platform SDK for Pocket PC, you may experience problems building applications using the eMbedded Visual Tools. It is suggested that you repair any cancelled uninstallations of the SDK using the following steps.
To avoid SHCreateMenuBar failure the following steps must be completed for a Pocket PC application generated without the WCE Pocket PC App Wizard. Also, afxres.h should be removed if the user does not have the MFC Support installed with the SDK, as this will prevent the application from compiling.
#include "newres.h" ( instead of #include "afxres.h" )
If you add a bitmap into menubar, add the bitmapID in the code before calling SHCreateMenuBar. The following code snippet provides an example.
HWND CreateRpCommandBar(HWND hwnd)
{
SHMENUBARINFO mbi;
memset(&mbi, 0, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = hwnd;
mbi.nToolBarId = IDM_MENU;
mbi.hInstRes = hInst;
mbi.nBmpId = 0; // Pass into the BitmapID that is generated by Resource Editor
mbi.cBmpImages = 0; // Pass into the number of BmpImages
if (!SHCreateMenuBar(&mbi))
return NULL;
return mbi.hwndMB;
}
Currently NetReg does not attempt to register the machine name over a RAS connection. This is because RAS DHCP addresses (such as the WINS server) are not stored in the registry, and without the addresses NetReg will not attempt any operation.
Since the redirector is not present in the Pocket PC OS, NetReg will not work unless the user (or someone) manually puts the address of the WINS server into the registry.
Some Windows CE TAPI application programs hang in GetMessage( ) waiting for a message to the primary thread that never arrives. TAPI messages are sent directly to the callback function and the first message the primary thread gets is a timeout. On NT, the GetMessage( ) call is necessary and the program hangs if a delay loop is substituted. If the GetMessage( ) call is replaced by Sleep(50) followed by PeekMessage( ), the program works on both NT and CE.
In some cases the z-order of windows, including dialogs and menus, may be set wrong on an initial drawing of the affected window.
By default, the size of a Windows CE Visual Basic InputBox will exceed the size of the Pocket PC desktop area.
Certain Settings Cause Text Display Error on a Form for Visual Basic
When designing a label on a form for Visual Basic, setting AutoStyle to True and BorderStyle to Fixed Single causes Windows CE to not fully display the text on the label.
WCE MFC App Wizard Generates Code Errors
Under certain conditions, the WCE MFC App Wizard (DLL) generates code for your new project that is not correct. If you create a new DLL App Wizard project, the following error may show when building for the Pocket PC:
fatal error C1189: #error : OLE classes not supported for Pocket PC.
To avoid the DLL App Wizard problem
#if defined(_WIN32_WCE_PSPC)
To this:
#if defined(_WIN32_WCE_PSPC) && (_WIN32_WCE < 211)
and Win32\Voicerec.
The Pocket PC SDK CEPC bin files are not compatible with the video drivers in 486 CEPCs. Pentium CEPCs do not have any compatibility problem.
Missing MENU_HEIGHT
In order to create a main window correctly, you must enter the following string in your application header file:
#define MENU_HEIGHT 26
Infrared Communication Socket Call May Not Complete
IrSquirt will re-use a socket for connection attempts if the connection fails. On a "successful" connect, IrDA will return connection pending to AFD and will call the ConnectComplete callback function when the connection confirmation is received. However, AFD does not wait for ConnectComplete before successfully completing the WinSock connection request.
(TAPI) Some Modems Dial Without Waiting for Dial Tone
Some modems will attempt to dial a telephone number without first waiting for a dial tone. When configuring Dial-Up networking, setting the "Wait for dial tone before dialing" in the "Dialing Properties" dialog box may have unreliable results, depending on the type of modem you are using.
Registry Key Settings for Digital Cellular Adapter
When using the datascope for the DoCoMo digital cellular adapter, insert the following settings into the HKEY_LOCAL_MACHINE\Drivers\PCMCIA registry key:
[HKEY_LOCAL_MACHINE\Drivers\PCMCIA\DataScope_for_DoCoMo-1.00-5D8C] "Tsp"="Unimodem.dll" "DeviceArrayIndex"=dword:1 "Prefix"="COM" "Dll"="Serial.Dll" "DeviceType"=dword:3 "ResetDelay"=dword:5DC "FriendlyName"="DataScope for DoCoMo"
Because the CE Emulation GDI functions do not SetLastError() when there is an error, GetLastError() does not work under emulation.
Under the topic "Sample Code for a Pocket PC," the description for the Hello sample incorrectly states that the sample "Creates a window and draws a 'Hello Palm-size PC' text in the middle of the window." The sample actually draws "Hello Pocket PC" to the screen.
If you modify a sample .RC file and then begin getting "error RC2104 : undefined keyword or key name: I_IMAGENONE" please comment out the #include <commctrl.h> in resource.h if it exists. The CalendarandDtp sample is known to have this problem.
The OLEDB Simple Provider sample is not included in the list of samples provided in the Pocket PC Help. OLEDB Simple Provider is located in the following directory.
\MS Pocket PC\samples\win32\OLEDB Simple Provider
To build a sample both eMbedded Visual C++ and eMbedded Visual Basic should be used.
Only 2 digits of currency may be entered. This is due to a problem with the iterator for vararg arguments smaller than 4 bytes.
This will be fixed in the final release.
Applications created with the Microsoft eMbedded Visual C++ IDE wizards and some samples depend on the MFC portion of the SDK being installed in order to build.
Samples Not Supported for Emulation
The process list does not refresh properly in emulation when running the PviewCE Sample.
To make the best use of emulation in your development cycle it is important to understand how emulation works and what its limitations are.
Architecturally emulation is a subset of the Windows CE OS used on Windows for the Pocket PC, ported to run on Windows NT. Windowing and process handling are not ported in this procedure. Windowing, process handling and memory management are all passed down to Windows NT. As a result, there are subtle differences between emulation and the device in each of these areas. With this in mind, the model for development using emulation should become clearer. While the fidelity of emulation is not absolute in relation to a real device, it does offer many benefits over development directly on a device.
If the emulator stops responding when changing between Pocket PC and other Windows CE emulators, please use task manager to end the following processes: filesys.exe, device.exe, cesrvr.exe, and cemgrc.exe. It may also be necessary to restart eMbedded Visual C++ or eMbedded Visual Basic.
If the user encounters this condition that they should disconnect the remote tool from the emulator and reconnect, which will allow the emulator to begin responding again.
If the CreateFile API was used to create a file or the DeleteFile API was used to delete a file, then the emulation screen will not appear to be updated until the screen is refreshed.
Similar refresh problems occur when copying and pasting files and folders in emulation using the copy and paste options from the pop-up menu in emulation.
In order to create a connection, TCP/IP must be installed on the desktop.
In order to view appointments in the calendar application for Pocket PC emulation, please choose View->Day from the menu and choose the day containing the appointment.
In the event the input panel control does not respond under emulation, hold the mouse button until a context menu appears and then click the control you wish to enter data in. It should now be possible to use the input panel window to enter data.
The handwriting recognition dll is not included for emulation. Please test handwriting recognition code on the device.
Moving the emulator during startup or when an application is starting may result in unexpected behavior. If you experience problems, exit the emulator and restart.
The following API return error codes inconsistent with a Pocket PC device.
These API should be tested on a device only.
Entering Euro currency symbols in fields on the Owner Information page of the Today screen will create symbols that look like squares.
Emulation fails with a German string in installation path.
The user cannot change the desktop clock via the emulator. The call will still return true but the clock will not change.
On the device, the vertical and horizontal line was drawn with a straight end. In emulation, the lines were drawn with a round edge.
When using the eMbedded Visual Basic tookit to develop emulation applications, a z-ordering problem can make the emulator inaccessible when the eMbedded Visual Basic Integrated Development Environment (eVB IDE) is positioned over the emulator (even partially). For optimal accessibility to the emulator you should use these two applications side by side on your development workstation.
Emulation Shell Fails to Restart After Exit
If you exit an emulation shell and immediately attempt to restart it, the restart attempt will fail.
Using Visual Basic Forms in Emulation
To use Visual Basic forms in Pocket PC emulation, you must install the Pocket PC SDK after you install eMbedded Visual Basic 3.00. If you install eMbedded Visual Basic 3.00 after you install the Pocket PC SDK, you must uninstall and reinstall the Pocket PC SDK. You need at least 2 MB of storage memory and 2 MB of RAM to run a debug version of MFC ActiveX controls on a MIPS Pocket PC device.
Low Memory Causes Loss of Input Panel in Emulation
Under low memory situations, you may not be able to access the input panel. To access the input panel you must free memory by closing applications on the desktop.
IR File Transfers Not Supported in Emulation
The Pocket PC's emulation environment does not support IR file transfers.
Microsoft Office Manager Causes Emulation Menus to Misfunction
If the Microsoft Office Manager is running and you experience problems with emulation menus, set the Microsoft Office Manager’s properties to Auto hide.
To Run Emulation Applications from Windows NT Explorer or FileManager
Running emulation applications from the Windows NT Explorer or FileManager is not directly supported. If you wish to do so, you must modify your system or user path environment variable from the System applet in the Control Panel. The path to the emulator window directory, typically C:\Windows CE Tools\wce300\MS Pocket PC\emulation\pocketpc\windows, must be added to your path. Microsoft does not recommend this method due to potential conflict with other emulation environments. Use the Emulation Environment for the Pocket PC menu item instead, and run the sample from the command line using the fully qualified name of the executable.
Setting a Calendar Entry Requires a Restart of Emulation
Because of the differences in architecture of emulation and the Pocket PC, emulation needs to be restarted after setting a calendar entry for the reminder to be emitted.
In the rare case that an application causes the emulator to fail, it may become necessary to manually shutdow certain emulation processes from NT's taskmanager. The process that should be terminated is: shell32.exe. You may also need to manually terminate your application.
Under Emulation, when using certain dialogs, the "OK" button may disappear as the mouse passes out of the dialog client area to the menu bar. The work around for this problem is to mouse click back in the client area of the dialog, at this point the "OK" button should reappear and be usable.
Unlike actual hardware, this version of the emulator allows for multiple instances of a particular app to run concurrently. A previous instance of an application should be terminated prior to restarting another instance.
The Windows CE Platform SDK now provides a debugging window that can be turned on or off with a registry setting.
The registry key is as follows:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Platform SDK\Debug]
"OutputWindow"="None"
After you install the Platform SDK, OutputWindow is set to the default None. If you decide to obtain debug information, this value should be changed to Debugger or Console. Debugger directs all debug information to the active debugger—IDE debugger or WinDBG. Console directs all debug information to each individual console window of applications (including filesys, device, explorem) currently running under the emulation.
To print debugging information to this window, NKDbgPrintfW() must be called. NKDbgPrintfW() is prototyped in DBGAPI.h.
Windows CE Emulation relies on underlying Windows NT/2000 functionality. Therefore applications may be able to do more in emulation than on a Windows CE device. If you use an API parameter that is not defined in Windows CE, the result may be different on the device. The following section discusses all known emulation differences.
CeGetThreadPriority and CeSetThreadPriority are not currently supported for emulation.
FindFirstFileEx: Call always passes on emulation regardless if the same call fails on the device. For example, calls with invalid parameters will still pass under emulation.
GetOpenFileName: On the device, the hwndOwner member of the OpenFileName parameter passed to GetOpenFileName can be NULL. In emulation, however, the hwndOwner member must be set to a valid window before calling GetOpenFileName, as in the following example:
ofn.hwndOwner=hwndMain;
GetOpenFileName(&ofn);
SipSetDefaultRect does not work properly under emulation at this time.
When passed an invalid handle, the following Windows CE GDI functions will set the error state returned by GetLastError() to ERROR_SHARING_VIOLATION rather than the proper error state of ERROR_INVALID_HANDLE.
SetBkMode() GetBkMode() SetBkColor() GetBkColor() CreateBitMap()
Applications running under emulation cannot change Windows NT settings via the Get* or Set* APIs.
When using CreateBitmap() to create bitmaps with 2, 4 or 8 bits per pixel, a monochrome bitmap will always be returned.
When running in emulation, 2-bits-per-pixel bitmaps are not supported.
The coordinates from the following functions are treated differently in emulation than when running on a Windows CE device:
ClientToScreen(); ScreenToClient(); MoveWindow();
CreateDIBSection cannot be used to create 2-bits-per-pixel bitmaps when running in emulation.
The SipShowIM function requires an undocumented flag, SIPF_DOCKED, to work properly under emulation. Use a C bitwise OR operator to combine the SIPF_DOCKED flag with the SIPF_ON flag to display an input panel, and combine SIPF_DOCKED with SIPF_OFF to hide an input panel. This combination of flags works both for emulation and for Windows CE-Based devices.
If the size of a buffer containing region data is smaller than required, GetRegionData indicates a failure by returning 0 instead of the number of bytes needed.
The information stored in the lParam of a WM_CREATE message may not match the values that were specified in the call to the CreateWindow function. This is because the Windows NT and Windows CE window managers use style bits differently.
If you set the display on the host machine to 65,536 colors, the dividers for menu sections and the column heading buttons may display different colors than expected.
Because emulation is based on the underlying Win32 APIs running on Windows NT, the bmWidthBytes structure used by the CreateDIBSection function may return values that are consistent with Windows NT and inconsistent with Windows CE.
The CreateDIBPatternBrushPt function may return the incorrect brush style and color.
The GetTextMetrics function may return the incorrect font height.
When programming in Visual Basic for Windows CE, a form window or input panel can disappear behind the Active Desktop. To cause the form window to reappear, press ALT+TAB. To cause the input panel to reappear, press ALT+TAB or select the keyboard icon on the task bar.
When running Visual Basic for Windows CE, a form window clicking the keyboard icon on the task bar will bring the input panel back.
Microsoft® ActiveSync™ 3.0 supports one Windows CE connection at a time. If the device is engaged in a successful PC-Link session, and a second PC-Link session is attempted from another device, then the second PC-Link session fails. A dialog is shown that states: “Cannot start communications with the desktop computer. The computer is not available or busy and currently cannot accept connections.” If the currently connected session is terminated and the failed connection is re-attempted, it will succeed.
The following section lists the known issues and limitations of this release.
Emulation
When the SIPBehavior property is set to SIPAlways, you are still able to close down the input panel. The expected behavior is that you should not be able to close down the input panel with the input panel icon.
Intrinsic Controls
All Controls: The focus rectangle is not displayed and you cannot visually determine which control has focus.
TextBox: Text always appears left-aligned at runtime. The runtime is ignoring the alignment property.
Form.Load: Use caution with the code used in the Form.Load event routine. Things like MsgBox, Form.Controls collection, and Form.ActiveControl may behave erratically due to the fact that the form is not initialized yet.
Label: No border appears at runtime when the BorderStyle property is set to “1- Fixed Single.”
Frame: The Frame_DblClick event is not occurring. Instead, the Click event fires twice.
KeyPress Events: The Key events (KeyUp, KeyPress, and KeyDown) are all firing when the stylus is released from a key. If a key is pressed and held down, no events occur.
ActiveX Controls
When the FontSize property is set to negative values a large positive number is stored for the FontSize. This effects the following ActiveX controls: ListView, TreeView, TabStrip, and CommonDialog.
CommonDialog: The DefaultExt property is not being added to the file name after clicking the Save button in a Common Save dialog. If a name is entered without an extension, no extension is added.
CommonDialog: The DialogTitle property does not change the dialog title of the Open or Save as Common Dialog. The dialog titles for both are always the same.
CommonDialog: Writing to the FileName property at runtime should set an initial file and/or directory; however, only the My Documents folders are displayed. In fact, setting a valid filename from the My Documents folder does not select that file from the rest.
Grid: The RowHeightMin property is adding 5 to the value assigned to it. For example, if the property is set to 100, the value 105 is returned when read.
MenuBar: Firing events on top level menus is not supported. Instead, you can use a button with a caption and intercept the ButtonClick.
MenuBar: NewButton's definition in the MenuBar library does not state that it is read only. In the IDE, intellisense finishes an assignment statement in code with the options of True and False. However, an error is generated if True or False is assigned to the NewButton property at runtime.
MenuBar: The Object Property and Index Property are not supported, even though they show up in intellisense.
TreeView: Displaying a Form on the NodeClick event does not make the new form active. Instead the new form is placed behind the current active form. Actually the new form is shown, but focus is then passed immediately back to TreeView form bringing it to the foreground.
TreeView: If you have a TreeView control that contains at least one Node and another control (e.g., a TextBox) the NodeClick event is fired before the LostFocus event of the additional control (e.g, the TextBox).
TreeView: A node can be added to a TreeView control with an invalid Relative parameter. This could cause problems based upon what the Relationship parameter is set to. The node may appear in a different order or level then it's supposed to appear.
TreeView: Changing a TreeView node's Image property at runtime only changes the image if that node does not have focus. Also, after the Image has changed, refocusing on the node returns the Image to the original one.
The Pocket PC Game API (GAPI) provides solutions for developers who want to write high-performance, real-time games for Microsoft® Windows® CE-based devices.
GAPI can be found on the Pocket PC SDK CD in the following directory for both eMbedded Visual C++ and eMbedded Visual Basic.
[CD root]\<Pocket PC SDK folder>\support\GameAPI
To avoid conflicts between games and future versions of GAPI, developers should redistribute the Game API in their local application directory--not in \windows. This is easily facilitated because the GAPI .dll, gx.dll, is small in size, at approximately 8k, and is the only .dll distributed in this manner.
The x86 emulator support has been added as a project compiling convenience only. The Pocket PC Game APIs are not supported and do not work under the x86 emulator.
Documentation for the Game API is located in the Pocket PC Help files. Please familiarize yourself with GAPI programming concepts in Using the Pocket PC Game API and the Pocket PC API Reference before you attempt to use the Game APIs.
Due to the evolving nature of GAPI at the time that the Help documentation was created, a few API are mentioned that either are not included in the GAPI header, gx.h, or have changed names. The following API mentioned in the documentation do not exist in the gx.h header.
Instead, use the following defined API.
Using Ambient Fonts and Properties
The Windows CE ActiveX Control Test Container supports ambient fonts and ambient backcolor properties, but you need to use VB script to set them. For example, you can use the following VB script to set the ambient font property:
Form1.Font="Tahoma" Form1.Font.Size=12
You cannot specify font information for an ActiveX Control while in design mode. Use VB script to change or add font information for an ActiveX control. The following example shows how to add font information with VB script.
Form1.Smile1.Font="Tahoma" Form1.Smile1.Font.Size=14 Form1.Smile1.Font.Italic=TRUE
The changes you make while in Design mode to the Height and Width properties of an ActiveX control do not appear in Run mode. You can modify the height and width of an ActiveX control during Run mode.
Converting a Windows CE ActiveX Control to a Windows Desktop Version
Microsoft eMbedded Visual C++ 3.0 no longer enables you to insert Windows CE ActiveX controls into the Resource Editor through emulation. You can now create desktop versions of your controls to insert into the Resource Editor.
To convert a Windows CE ActiveX control to a desktop version
ActiveX Controls Properties Interface Limitations
In Visual C++, you can use an ActiveX control's property dialog box to add font and color property pages, which you can then view in the resource editor. You cannot do this for Windows CE ActiveX controls.
Inserting ActiveX Controls into Dialog Boxes
If you insert an ActiveX control into a dialog box by right-clicking and choosing Insert ActiveX Controls, some events may not work at run time for the control. Use the following procedure to insert ActiveX controls that work properly.
To insert ActiveX controls that work at run time
BOOL CPolyCntrDlg::OnInitDialog()
{
...
ATLConnectSinks(&m_Polygon);
...
}
This is still under investigation and this will be fixed in the final release.
Data Access for Windows® CE now consists of ActiveX Data Objects for Windows® CE (ADOCE) version 3.0, OLE DB for Windows® CE, OLE DB for Windows® CE Software Development Kit (SDK), and the OLE DB Simple Provider (OSP) Toolkit.
This section contains information on the following topics.
Data synchronization: For database synchronization between the device and the desktop to function properly with Data Access for Windows® CE version 3.0, you need to install ActiveSync version 3.1 which is included with this release.
Installed files: Before using this SDK, be sure to download the newer ADOCE and related files from this SDK onto your device. The versions of the components in ROM on these devices are slightly out-of-date. Several of the files that need to be downloaded to your device must be registered on the device. To register a component on a device, use the Control Manager in eMbeddded Visual Basic, or use the Regsvrce.exe utility. For information on how to use the Regsvrce.exe utility, see documentation in the eMbedded Visual Basic 3.0 Release Notes.
The following table shows the components that are required to be downloaded to the device and notes if they need to be registered on the device.
| Component file | Needs to be registered? |
|---|---|
| Adoce30.dll | Yes |
| Adocedb30.dll | No |
| Adoceoledb30.dll | Yes |
| Adosync.dll | Yes |
| Fileosp.dll | Yes |
| Msdadc.dll | Yes |
| Msdaer.dll | Yes |
| Msdaeren.dll | No |
| Msdaosp.dll | Yes |
Documentation: Documentation for the ADOCE version 3.0 control can be found in both the Data Access SDK and in the Pocket PC documentation collection. The correct file is named ADOCE30.chm. Documentation for the OLE DB SDK and the OSP Toolkit are located near the ADOCE documentation.
The following lists describe the known issues and limitations of this release.
CEDB Provider - *.cdb databases
File OSP Provider Sample – FileOSPSample.dll
The following errors occur when the FileOSPSample provider is used.
cn.Open "bogus=string" ‘Should return an error, but does not. cn.open "bogus string" ‘Correctly returns an error
rs.Open String(32000, "z"), "provider=fileospsample", 2, 3. ‘Causes an error
General
CreateObject("adoce.connection.3.0")
CreateObject("adoce.recordset.3.0")
Using a string without the ".3.0" suffix will reference an older version of the ADOCE control, and will create an error if no earlier version exists.
newcn.Open "Provider=xxxxx;Data Source=d:\xxxxx.mdb" newcn.Open "Provider=yyyyyy;Data Source=yyyyyy”
Recordset.Move 1 on an empty recordset causes an unexpected error when CursorType is adOpenForwardOnly, and the LockType is adLockUnspecified. The expected returned error is adErrNoCurrentRecord. The actual returned error is: “0x80040E29: The rowset cannot scroll backwards.”
Control panel applets are dynamic-link libraries. To debug these files on Windows CE, you must create an .exe file that loads a particular .cpl or .dll. In the Debug function on the Project, Settings menu, the Executable for debug session and Remote executable path and file name edit boxes should contain the name of the .exe file. The Additional DLLs box should specify the .cpl or .dll.
If you have accepted the default directories when installing Microsoft eMbedded Visual Tools, additional documentation can be found in the following locations:
| Subject Area | Path and File Name |
|---|---|
| Installation and Setup | C:\Program Files\Microsoft eMbedded Tools\README.HTM |
| eMbedded Visual Basic | C:\Program Files\Microsoft eMbedded Tools\EVB\releasenotes.htm |
| eMbedded Visual C++ | C:\Program Files\Microsoft eMbedded Tools\EVC\releasenotes.htm |
| SDK: H/PC Pro | C:\Windows CE Tools\hpcproreadme.htm |
| SDK: Palm-size PC 1.2 | C:\Windows CE Tools\pspc12readme.htm |
| SDK: Pocket PC | C:\Windows CE Tools\pocketpcreadme.htm |
Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, people and events depicted herein are fictitious and no association with any real company, organization, product, person or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.
© 2000 Microsoft Corporation. All rights reserved.
Microsoft, MS-DOS, Windows, Windows NT, and ActiveSync are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
The names of actual companies and products mentioned herein may be the trademarks of their respective owners.